using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Nextel.Utils;
using System.Collections.Generic;
using System.Collections;

public partial class RolBusqueda : PageController
{

    public List<RolBean> loDT;
    public string perfil;
    public string mensajeOk="";
    public string mensajeError="";
    public string codigoRolDefault = "";

    protected override void initialize()
    {
        mensajeOk = "";
        mensajeError = "";
        perfil = Request.Form["cmbPerfil"];
        if (perfil != null)
        {
            buscar();
        }
        else
        {
            
            grabar( );

            buscar( );

            
        }

    }

    public void buscar() {
        List<RolBean> lstRol = DBUsuario.getUsuarioRolPerfil(perfil);

        loDT = new List<RolBean>();

        foreach (RolBean rol in lstRol)
        {
            if (rol.codigopadre == null || "".Equals(rol.codigopadre))
            {
                rol.listaRol = lstRol.FindAll(delegate(RolBean beanrol) { return beanrol.codigopadre == rol.codigorol; });
                rol.listaRol.Sort( );
                loDT.Add(rol);
            }
        }
        loDT.Sort( );
    }

    public void grabar()
    {
        perfil = Request.Form["hidPerfil"];
        string codigoVer = Request.Form["chkVer"];
        string codigoCrear = Request.Form["chkCrear"];
        string codigoEditar = Request.Form["chkEditar"];
        string codigoEliminar = Request.Form["chkEliminar"];
        string codigoHome = Request.Form["chkHome"];
        string idOrden = Request.Form["idOrden"];

        codigoVer = Ordenar.ordenar(idOrden) + "," + codigoVer;

        try
        {
            DBUsuario.addRolPerfil(codigoVer, codigoCrear, codigoEditar, codigoEliminar, perfil, codigoHome);

            DBUsuario.updatePerfilPorRol(perfil, codigoHome);

            mensajeOk = IdiomaCultura.getMensaje(IdiomaCultura.WEB_MENSAJE_EXITO);
        }
        catch (Exception e) { mensajeError = e.Message; }
    }

    #region orden
    private class Ordenar : IComparable<Ordenar>
    {
        public int orden;
        public string modulo;

        public static string ordenar(string cadena)
        {
            string[] aorden = cadena.Split(',');
            List<Ordenar> lista = new List<Ordenar>();

            for (int i = 0; i < aorden.Length; i++)
            {
                string[] ar = aorden[i].Split('|');
                Ordenar bean = new Ordenar( );
                bean.modulo = ar[0];
                try
                {
                    bean.orden = int.Parse(ar[1]);
                }
                catch (Exception e) { bean.orden = 50; }

                lista.Add(bean);
            }

            lista.Sort();

            string cadenanueva="";

            foreach (Ordenar bean in lista)
            {
                cadenanueva = cadenanueva + "," + bean.modulo;
            }

            if (cadenanueva.Length > 0)
            {
                cadenanueva = cadenanueva.Substring(1);
            }

            return cadenanueva;

        }

        public int CompareTo(Ordenar o)
        {
            return orden.CompareTo(o.orden);
        }

    }
    #endregion 
}
